/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ifpb.pp.rh.entity;

import ifpb.pp.rh.constant.Ativo;
import ifpb.pp.rh.constant.FormaContratacao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Gabriella
 */
@Entity
public class DadosProficionais implements Serializable{

    private Integer cod;
    private String contrato;
    private Date saida;
    private Ativo ativo;
    private Date admissao;
    private String situacaoFuncional;
    private String regimentoTrabalho;
    private FormaContratacao formaContratacao;
    private List<Formacao> minhasFormacoes;
  
    public DadosProficionais() {
        this.inicializar();
    }

    
    @Temporal(TemporalType.DATE)
    public Date getAdmissao() {
        return admissao;
    }

    public void setAdmissao(Date admissao) {
        this.admissao = admissao;
    }

    @Enumerated(EnumType.STRING)
    public Ativo getAtivo() {
        return ativo;
    }

    public void setAtivo(Ativo ativo) {
        this.ativo = ativo;
    }

    @Id
    @GeneratedValue
    public Integer getCod() {
        return cod;
    }

    public void setCod(Integer cod) {
        this.cod = cod;
    }


    public String getContrato() {
        return contrato;
    }

    public void setContrato(String contrato) {
        this.contrato = contrato;
    }

    public String getRegimentoTrabalho() {
        return regimentoTrabalho;
    }

    public void setRegimentoTrabalho(String regimentoTrabalho) {
        this.regimentoTrabalho = regimentoTrabalho;
    }

    @Temporal(TemporalType.DATE)
    public Date getSaida() {
        return saida;
    }

    public void setSaida(Date saida) {
        this.saida = saida;
    }


    @Enumerated(EnumType.STRING)
    public FormaContratacao getContratacao() {
        return formaContratacao;
    }

    public void setContratacao(FormaContratacao contratacao) {
        this.formaContratacao = contratacao;
    }


    public String getSituacaoFuncional() {
        return situacaoFuncional;
    }

    public void setSituacaoFuncional(String situacaoFuncional) {
        this.situacaoFuncional = situacaoFuncional;
    }

    @OneToMany(cascade={CascadeType.PERSIST, CascadeType.REMOVE,CascadeType.REFRESH})
    public List<Formacao> getMinhasFormacoes() {
        return minhasFormacoes;
    }

    public void setMinhasFormacoes(List<Formacao> minhasFormacoes) {
        this.minhasFormacoes = minhasFormacoes;
    }


    public Boolean addFormacao(Formacao formacao){
        if(!this.minhasFormacoes.contains(formacao))
            return this.minhasFormacoes.add(formacao);
        return true;
    }
    
    public Boolean removerFormacao(Formacao formacao){
        if(this.minhasFormacoes.contains(formacao))
            return this.minhasFormacoes.remove(formacao);
        return true;
    }

    private void inicializar() {
        this.minhasFormacoes = new ArrayList<Formacao>();
        
    }

  




}
